Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


libs/able/testapps/bletest/server.go 2.0.0 (cf698d96) Text, 2.54 KB

T8b949e// +build

T8b949e// based on https://github.com/paypal/gatt/blob/master/examples/server.go

Tff7b72package Te6edf3main

Tff7b72import Tb4b4b4(
Ta5d6ff"fmt"
Ta5d6ff"log"
Ta5d6ff"time"
Ta5d6ff"github.com/paypal/gatt"
Ta5d6ff"github.com/paypal/gatt/linux/cmd"
Tb4b4b4)


Tff7b72var Te6edf3DefaultServerOptions Tb4b4b4= Tb4b4b4[Tb4b4b4]Te6edf3gattTb4b4b4.Te6edf3OptionTb4b4b4{
Te6edf3gattTb4b4b4.Te6edf3LnxMaxConnectionsTb4b4b4(T79c0ff1Tb4b4b4)Tb4b4b4,
Te6edf3gattTb4b4b4.Te6edf3LnxDeviceIDTb4b4b4(Tff7b72-T79c0ff1Tb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4,
Te6edf3gattTb4b4b4.Te6edf3LnxSetAdvertisingParametersTb4b4b4(Tff7b72&Te6edf3cmdTb4b4b4.Te6edf3LESetAdvertisingParametersTb4b4b4{
Te6edf3AdvertisingIntervalMinTb4b4b4: T79c0ff0x04ffTb4b4b4,
Te6edf3AdvertisingIntervalMaxTb4b4b4: T79c0ff0x04ffTb4b4b4,
Te6edf3AdvertisingChannelMapTb4b4b4: T79c0ff0x7Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}


Tff7b72func Te6edf3NewTestPythonServiceTb4b4b4(Tb4b4b4) Tff7b72*Te6edf3gattTb4b4b4.Te6edf3Service Tb4b4b4{
Te6edf3n Tff7b72:= T79c0ff0
Te6edf3s Tff7b72:= Te6edf3gattTb4b4b4.Te6edf3NewServiceTb4b4b4(Te6edf3gattTb4b4b4.Te6edf3MustParseUUIDTb4b4b4(Ta5d6ff"16fe0d00-c111-11e3-b8c8-0002a5d5c51b"Tb4b4b4)Tb4b4b4)

Te6edf3sTb4b4b4.Te6edf3AddCharacteristicTb4b4b4(Te6edf3gattTb4b4b4.Te6edf3MustParseUUIDTb4b4b4(Ta5d6ff"16fe0d01-c111-11e3-b8c8-0002a5d5c51b"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3HandleReadFuncTb4b4b4(
Tff7b72funcTb4b4b4(Te6edf3rsp Te6edf3gattTb4b4b4.Te6edf3ResponseWriterTb4b4b4, Te6edf3req Tff7b72*Te6edf3gattTb4b4b4.Te6edf3ReadRequestTb4b4b4) Tb4b4b4{
Te6edf3n Tb4b4b4= T79c0ff0
Te6edf3logTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Echo"Tb4b4b4)
Te6edf3fmtTb4b4b4.Te6edf3FprintfTb4b4b4(Te6edf3rspTb4b4b4, Ta5d6ff"test"Tb4b4b4)
Tb4b4b4}Tb4b4b4)
Te6edf3sTb4b4b4.Te6edf3AddCharacteristicTb4b4b4(Te6edf3gattTb4b4b4.Te6edf3MustParseUUIDTb4b4b4(Ta5d6ff"16fe0d02-c111-11e3-b8c8-0002a5d5c51b"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3HandleWriteFuncTb4b4b4(
Tff7b72funcTb4b4b4(Te6edf3r Te6edf3gattTb4b4b4.Te6edf3RequestTb4b4b4, Te6edf3data Tb4b4b4[Tb4b4b4]Tffa657byteTb4b4b4) Tb4b4b4(Te6edf3status Tffa657byteTb4b4b4) Tb4b4b4{
Te6edf3n Tb4b4b4= T79c0ff0
Te6edf3logTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Reset counter"Tb4b4b4)
Tff7b72return Te6edf3gattTb4b4b4.Te6edf3StatusSuccess
Tb4b4b4}Tb4b4b4)
Te6edf3sTb4b4b4.Te6edf3AddCharacteristicTb4b4b4(Te6edf3gattTb4b4b4.Te6edf3MustParseUUIDTb4b4b4(Ta5d6ff"16fe0d03-c111-11e3-b8c8-0002a5d5c51b"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3HandleWriteFuncTb4b4b4(
Tff7b72funcTb4b4b4(Te6edf3r Te6edf3gattTb4b4b4.Te6edf3RequestTb4b4b4, Te6edf3data Tb4b4b4[Tb4b4b4]Tffa657byteTb4b4b4) Tb4b4b4(Te6edf3status Tffa657byteTb4b4b4) Tb4b4b4{
Te6edf3nTff7b72++
Te6edf3logTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Increment counter"Tb4b4b4)
Tff7b72return Te6edf3gattTb4b4b4.Te6edf3StatusSuccess
Tb4b4b4}Tb4b4b4)
Te6edf3sTb4b4b4.Te6edf3AddCharacteristicTb4b4b4(Te6edf3gattTb4b4b4.Te6edf3MustParseUUIDTb4b4b4(Ta5d6ff"16fe0d04-c111-11e3-b8c8-0002a5d5c51b"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3HandleReadFuncTb4b4b4(
Tff7b72funcTb4b4b4(Te6edf3rsp Te6edf3gattTb4b4b4.Te6edf3ResponseWriterTb4b4b4, Te6edf3req Tff7b72*Te6edf3gattTb4b4b4.Te6edf3ReadRequestTb4b4b4) Tb4b4b4{
Te6edf3logTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Response counter: "Tb4b4b4, Te6edf3nTb4b4b4)
Te6edf3fmtTb4b4b4.Te6edf3FprintfTb4b4b4(Te6edf3rspTb4b4b4, Ta5d6ff"%d"Tb4b4b4, Te6edf3nTb4b4b4)
Tb4b4b4}Tb4b4b4)

Te6edf3sTb4b4b4.Te6edf3AddCharacteristicTb4b4b4(Te6edf3gattTb4b4b4.Te6edf3MustParseUUIDTb4b4b4(Ta5d6ff"16fe0d05-c111-11e3-b8c8-0002a5d5c51b"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3HandleNotifyFuncTb4b4b4(
Tff7b72funcTb4b4b4(Te6edf3r Te6edf3gattTb4b4b4.Te6edf3RequestTb4b4b4, Te6edf3n Te6edf3gattTb4b4b4.Te6edf3NotifierTb4b4b4) Tb4b4b4{
Te6edf3logTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Notifications enabled"Tb4b4b4)
Te6edf3cnt Tff7b72:= T79c0ff1
Tff7b72for Tb4b4b4!Te6edf3nTb4b4b4.Te6edf3DoneTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3fmtTb4b4b4.Te6edf3FprintfTb4b4b4(Te6edf3nTb4b4b4, Ta5d6ff"%d"Tb4b4b4, Te6edf3cntTb4b4b4)
Te6edf3cntTff7b72++
Te6edf3timeTb4b4b4.Te6edf3SleepTb4b4b4(T79c0ff100 Tff7b72* Te6edf3timeTb4b4b4.Te6edf3MillisecondTb4b4b4)
Tb4b4b4}
Te6edf3logTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Notifications disabled"Tb4b4b4)
Tb4b4b4}Tb4b4b4)

Tff7b72return Te6edf3s
Tb4b4b4}


Tff7b72func Te6edf3mainTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3dTb4b4b4, Te6edf3err Tff7b72:= Te6edf3gattTb4b4b4.Te6edf3NewDeviceTb4b4b4(Te6edf3DefaultServerOptionsTff7b72...Tb4b4b4)
Tff7b72if Te6edf3err Tff7b72!= Tff7b72nil Tb4b4b4{
Te6edf3logTb4b4b4.Te6edf3FatalfTb4b4b4(Ta5d6ff"Failed to open device, err: %s"Tb4b4b4, Te6edf3errTb4b4b4)
Tb4b4b4}

Te6edf3dTb4b4b4.Te6edf3HandleTb4b4b4(
Te6edf3gattTb4b4b4.Te6edf3CentralConnectedTb4b4b4(Tff7b72funcTb4b4b4(Te6edf3c Te6edf3gattTb4b4b4.Te6edf3CentralTb4b4b4) Tb4b4b4{ Te6edf3fmtTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Connect: "Tb4b4b4, Te6edf3cTb4b4b4.Te6edf3IDTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4,
Te6edf3gattTb4b4b4.Te6edf3CentralDisconnectedTb4b4b4(Tff7b72funcTb4b4b4(Te6edf3c Te6edf3gattTb4b4b4.Te6edf3CentralTb4b4b4) Tb4b4b4{ Te6edf3fmtTb4b4b4.Te6edf3PrintlnTb4b4b4(Ta5d6ff"Disconnect: "Tb4b4b4, Te6edf3cTb4b4b4.Te6edf3IDTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Te6edf3onStateChanged Tff7b72:= Tff7b72funcTb4b4b4(Te6edf3d Te6edf3gattTb4b4b4.Te6edf3DeviceTb4b4b4, Te6edf3s Te6edf3gattTb4b4b4.Te6edf3StateTb4b4b4) Tb4b4b4{
Te6edf3fmtTb4b4b4.Te6edf3PrintfTb4b4b4(Ta5d6ff"State: %s\n"Tb4b4b4, Te6edf3sTb4b4b4)
Tff7b72switch Te6edf3s Tb4b4b4{
Tff7b72case Te6edf3gattTb4b4b4.Te6edf3StatePoweredOnTb4b4b4:
Te6edf3s1 Tff7b72:= Te6edf3NewTestPythonServiceTb4b4b4(Tb4b4b4)
Te6edf3dTb4b4b4.Te6edf3AddServiceTb4b4b4(Te6edf3s1Tb4b4b4)
Te6edf3dTb4b4b4.Te6edf3AdvertiseNameAndServicesTb4b4b4(Ta5d6ff"KivyBLETest"Tb4b4b4, Tb4b4b4[Tb4b4b4]Te6edf3gattTb4b4b4.Te6edf3UUIDTb4b4b4{Te6edf3s1Tb4b4b4.Te6edf3UUIDTb4b4b4(Tb4b4b4)Tb4b4b4}Tb4b4b4)
Tff7b72defaultTb4b4b4:
Tb4b4b4}
Tb4b4b4}

Te6edf3dTb4b4b4.Te6edf3InitTb4b4b4(Te6edf3onStateChangedTb4b4b4)
Tff7b72select Tb4b4b4{Tb4b4b4}
Tb4b4b4}


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────